#pragma once
#include "PDTNode.h"

class PDTStatement : public PDTNode
{
protected:
	friend class PDTNilStatement;
	PDTStatement(){
	}
public:
  unsigned int depth;
  PDTStatement(PDTCodeGraph & CG);

  NodeTypeEnum
  getType()
  {
    return PDTStatement_Em;
  }
  virtual bool
  isStatement()
  {
    return true;
  }

  virtual void
  incrementDepth();
  virtual void
  incrementChildrenDepth();
};

class PDTNilStatement :  public PDTStatement, public TraverseIfc <PDTNilStatement, PDTNode> { public:  TRAVERSAL_IFC_IMPL(PDTNilStatement)
private:
	PDTNilStatement() {
	}
public:
	virtual stringstream & toString(stringstream & ss) const {
		ss << "(nil)";
		return ss;
	}

	static PDTNilStatement nil;
};
